package com.java.core1.chapter3;

/**
 * @author ClearScenery
 * @version 创建时间：2019年2月26日 下午2:48:57
 * @ClassName TestReusltInt
 * @Description 测试byte和short运算结果为int
 */
public class TestReusltInt {
	public static void main(String[] args) {
//		char c = 'a';
		byte b = 1;
		short st = 2;
		
		//char,byte,short多值进行运算转换成int
		System.out.println(b+st);//3
		
		//short result1 = b + st;//编译不通过
		//byte result2 = b + st;//编译不通过
		int result = b + st;
		//char result3 = b + st;//编译不通过
		
		byte b1 = 127;
		byte b2 = 127;
		
//		b1 = b1 + 1;//编译不通过
		b1 += 1;//结合运算符会自动发生强转
		b1 = b1;
		b1 = ++b1;
		//byte bResult1 = b1 + bb;//编译不通过
		
		final byte bb1 = 4;
		final byte bb2 = 4;
		
	    byte bb3 = bb1 + bb2;
		
		int i1 = b1 + b2;
		
		byte b3 = 1;
		byte b4 = 1;
		
		//byte bResult2 = b1 + b2;//编译不通过
		int i2 = b1 + b2;
		
		//01111111 11111111 11111111 11111111  4字节32位 每字节8位二进制数
		int i3 = Integer.MAX_VALUE ;//2147483647;//int最大值
		
		//01111111 11111111 11111111 11111111  4字节32位 每字节8位二进制数
		int i4 = Integer.MAX_VALUE;//2147483647;//int最大值
		
		int iResult1 = i3 + i4;
	    /*
	     *  	01111111 11111111 11111111 11111111
	     *  +   01111111 11111111 11111111 11111111
	     *---------------------------------------------
	     *	    11111111 11111111 11111111 11111110    : 负数
	     * 	    10000000 00000000 00000000 00000001    : 除符号位按位取反+1
	     * ---------------------------------------------- 
	     * 		10000000 00000000 00000000 00000010    : -2 补码表示
	     */
		System.out.println(iResult1);//-2
		
		
		//结论：整型数在计算机中，使用补码表示。
		//10000000 00000000 00000000 00000000
		int i5 = Integer.MIN_VALUE;//-2147483648;//int最小值
		int i6 = Integer.MIN_VALUE;//-2147483648;//int最小值
		
		/*
		 * 		10000000 00000000 00000000 00000000  
		 * 	+ 	10000000 00000000 00000000 00000000
		 * --------------------------------------------
		 *      00000000000000000000000000000000000
		 */
		System.out.println(i5+i6);//0
		
		short st1 = Short.MIN_VALUE;//-32768
		short st2 = Short.MIN_VALUE;//-32768
		
		short st3 = Short.MAX_VALUE;//-32768
		short st4 = Short.MAX_VALUE;//-32768
		
		//short stResult = st1 + st2;//编译不通过
		
		int iResult2 = st1+st2;//结果正确
		System.out.println(st1+st2);//-65536
		
		int iResult3 = st3+st4;//结果正确
		System.out.println(st3+st4);//65534
	}
}
